"""
ASGI config for chat_django_demo project.

It exposes the ASGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/
"""
import os,django

from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter


os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'chat_django_demo.settings')

django.setup()
# application = get_asgi_application()
from chat_django_demo import routing

application = ProtocolTypeRouter({
    'http': get_asgi_application(),  # 支持http请求
    'websocket': URLRouter(routing.websocket_urlpatterns),  # 支持websocket请求
})
"""
daphne -b 0.0.0.0 -p 8000 --access-log logs.log -v 2 chat_django_demo.asgi:application

它将开启一个进程，监听 127.0.0.1:8000。这需要你的项目位于 Python path 上。为了确保这点，你应该在与 manage.py 文件相同的路径中运行这个命令。

例如，以下命令将启动一个绑定在127.0.0.1:8000上，使用4个工作进程的Daphne服务器，并将访问日志输出到access.log文件中：

daphne --bind 127.0.0.1 --port 8000 --workers 4 --access-log access.log myproject.asgi:application

常用参数详解

下面是一些常用的 Daphne 参数：

--port: 指定 Daphne 监听的端口，默认为8000。

--bind: 指定 Daphne 监听的 IP 地址和端口，格式为ip:port。

--unix-socket: 指定 Daphne 监听的 Unix 域套接字路径。

--verbosity: 指定日志详细程度，可选的值有 0（只输出错误信息）、1（输出错误信息和警告信息）、2（输出错误信息、警告信息和一般信息）。

--access-log: 指定访问日志文件路径，如果不指定，则不会记录访问日志。

--root-path: 指定静态文件根目录，用于提供静态文件服务。

--ping-interval: 指定 Websocket ping 的间隔时间，单位为秒，默认为20秒。

--ping-timeout: 指定 Websocket ping 超时时间，单位为秒，默认为30秒。

--http-timeout: 指定 HTTP 请求超时时间，单位为秒，默认为120秒。

--websocket-timeout: 指定 Websocket 连接超时时间，单位为秒，默认为120秒
"""